User loginNavigation |
ICFP contest starts tomorrowJust a quick reminder -- the 2008 ICFP Programming Contest starts tomorrow. Functional NetlistsFunctional Netlists, Sungwoo Park, Jinha Kim, Hyeonseung Im. ICFP 2008.
Given the recent discussion about hardware synthesis languages, the appearance of this paper seems timely. The use of linear types is perhaps unsurprising from a technical point of view, but it's surprising when you consider how frequently and in how many different contexts they appear. Also, one thing I don't understand: there's apparently a difference between a "hardware description language" and a "hardware synthesis language". If anyone could explain what the difference means, I'd appreciate it. :) Lisp’s 50th Birthday CelebrationSee the Dusty Decks announcement. Non-Deterministic Recursive Ascent ParsingNon-Deterministic Recursive Ascent Parsing, Renee Leermakers. 1991 conference on European chapter of the Association for Computational Linguistics.
How LR parsers worked always confused me until I learned about their presentation in terms of recursive ascent. Hardware Acceleration of Matrix Multiplication on a Xilinx FPGAvia Jeff Newbern in the discussion forum comes the writeup from the winning entry in the MEMOCODE 2007 contest:
Wow! This is much cooler than the kinds of programs I write :-) This MIT/Bluespec team won the first contest at MEMOCODE 2007 and the second in MEMOCODE 2008. The results for 2008 are very interesting: The Bluespec team had the highest performance by an order of magnitude, the next fastest program was written by one guy in straight C without using the FPGA, and the rest were mostly in a hybrid of C and (V?)HDL. Does this make Bluespec the programming tool of choice for discriminating hardware hackers? Hardware Design and Functional Programming: a Perfect MatchHardware Design and Functional Programming: a Perfect Match by Mary Sheeran, Journal of Universal Computer Science, Special issue devoted to the Brazilian Symposium on Programming Languages, 2005.
Why Multi-Core is Easy and Internet is HardI was recently invited to be on the panel Reinventing Audio and Music Computation for Many-Core Processors at the International Computer Music Conference (ICMC 2008), Belfast, Ireland, Aug. 2008. In my position statement, The Challenges and Opportunities of Multiple Processors: Why Multi-Core Processors are Easy and Internet is Hard, I explain why programming multi-core processors is basically a sociological problem (the technical problems were solved long ago) and why programming loosely coupled systems (like the Internet) still has a lot of technical challenges. I am curious to hear what the LtU community thinks about this. By Peter Van Roy at 2008-06-26 15:41 | Parallel/Distributed | 49 comments | other blogs | 42328 reads
The A-Z of Programming LanguagesHere are the interviews in the series up to this point.
Project Coverage
Revisiting CoroutinesRevisiting Coroutines, by Ana Lucia de Moura and Roberto Ierusalimschy:
Coroutines seem to get fairly short riff in the literature, and they have only been discussed on LTU, a couple of times. Given coroutines have such a straightforward mapping to hardware, I hope they get more attention. Coroutines show up in many different places. For instance, the inter-process communication (IPC) facilities of microkernels, like EROS, are a faithful implementation of asymmetric coroutines, with an important difference. Essentially, yield and resume must both take an explicit coroutine argument naming the coroutine respectively yield to and resume. If the coroutine to yield to is left implicit, as it is in most treatments I've seen, then coroutines become less composable since yield returns control to the innermost resume which, given abstract types, might be the wrong one. This problem is discussed in Section 5.6, "Avoiding Interference Between Control Actions". The paper recommends tagging coroutines to match up resume/yield pairs, but the EROS IPC system provides a more direct encoding via a "resume" capability, which is a single-use coroutine used to return control directly to a client. Each subsequent invocation of the object synthesizes a new resume capability. Taking this to the extreme implies that yield and resume can be unified into a single "invoke" operation which accepts a coroutine argument to be used in a subsequent invoke operation. Indeed, these are "symmetric coroutines". This paper suggests that symmetric coroutines are harder to understand due to the actors/CPS-like nature of the control flow. |
Browse archives
Active forum topics |
Recent comments
2 weeks 2 days ago
2 weeks 3 days ago
2 weeks 4 days ago
2 weeks 4 days ago
3 weeks 2 days ago
3 weeks 2 days ago
3 weeks 2 days ago
6 weeks 3 days ago
7 weeks 1 day ago
7 weeks 1 day ago